本篇文章同步發布於 Python 如何自動化處理 Excel?解決工廠訂單管理挑戰的實際案例【Python 處理 Excel #29】
這篇文章分享如何運用 Python 的 pandas 和 openpyxl 套件,解決工廠資材部門在 ERP 系統轉換後面臨的 Excel 報表更新挑戰。文章將詳細敘述如何通過程式化方案,將原本需要 6 小時的人工作業縮短至 5 分鐘,同時提供更全面的訂單狀態追蹤。這不僅大幅提升工作效率,更為管理決策提供可靠的數據支持,使部門能夠更有效地掌握和分析訂單達交情況。
我在工廠的資材部門工作,這個部門主要負責安排工廠的生產計畫以及管控工廠庫存,每周我的部門都會向總公司的業務管理部門更新工廠這個月承諾可以出貨多少訂單數量和金額,我們稱之達交數量和達交金額。
畢竟要出貨公司才能賺錢,老闆們總是會優先關心這個月的達交金額是多少?其次是不能達交的金額遇到了什麼問題?為什麼不能達交?由於不能達交的原因很常是因為訂單的原物料狀況 (以下簡稱料況) 有問題,所以通常我們會連帶更新不能達交的訂單料況。
資材提供的報表數據會直接影響公司的營收決策。然而隨著公司將 ERP 系統從舊的自製系統轉換為商用套裝 ERP 系統,新系統內的資訊雖然齊全,但彼此之間的連結性尚弱,造成查詢資料與更新報表的工作十分繁瑣。
聽說在舊 ERP 系統無論是達交金額或料況都已請經 MIS 寫好報表程式,以使用者覺得清楚的方式呈現,可是在新 ERP 系統因為還沒有建立類似的整合性報表,同事們不得不將分散的資料下載到 Excel 中,使用大量使用 VLOOKUP、SUMIF 等函數整理資料,這種方法不僅耗時,而且難以提供完整的訂單清單和詳細的料況。
入職三個月後,更新達交金額和料況的任務交由我負責,同時需要解決以下 2 個問題:
為了解決這些問題,我選擇用 Python 作為工具,一邊深入研究公司 ERP 系統上的資料結構,一邊四處問部門的前輩們他們做事的方式是什麼。前輩們不會寫程式,但是了解他們的人工判斷細節對於我設計自動化流程至關重要,我可以將這些人為流程轉化為可以程式化的邏輯。
過程中我使用 Python 的 pandas 套件處理大量數據,並運用 openpyxl 套件美化 Excel 報表。由於這是我第一次將 Python 運用到這麼大規模的資料處理中,所以不斷透過試錯法 (trial and error) 改良程式碼。
不懂的 Python 語法就上網查或求助生成式 AI,一開始學 pandas 套件和 openpyxl 套件沒有明確的讀取檔案、處理資料、格式化、輸出檔案等步驟可以依循,什麼都不會的情況下,當然是當下需要什麼功能就去查那個功能怎麼實作。
生成式 AI 不一定好用,因為問題比較複雜時,如果沒有辦法清楚定義問題與希望 AI 幫忙完成的事情,基本上 AI 產出的答案沒有辦法套用在日漸複雜的程式邏輯中,所以我也練習把大問題切割成小問題。
一次又一次的嘗試,也仰賴主管和同事們的回饋,才慢慢地設計出運行結果符合大家認知的達交金額與料況更新程式。
最早計算達交金額和整理料況的程式是兩個不同的程式,現在已經將這兩份程式合併在一起變成一個完整的程式專案。這個專案經驗幫助我達到 2 個效果:
以前因為缺少統整類型的數據,所以物料來不及進料時,見一個追一個,現在藉由程式產出的 Excel 報表資料,就能找出什麼物料對業績的影響最大、影響金額多少、總共欠缺多少數量等等,甚至能進一步以客戶/產品類別的角度分析整體接單和達交狀態。
我不止在這個專案中提升程式設計能力,還學會如何將複雜的業務邏輯轉換為可重複執行的程式碼。另外看著其他人將報表資料發揚光大,拿去做更多影響管理決策的應用,我自己也學到如何從數據的角度處理與追蹤異常。
本篇文章同步發布於 Python 如何自動化處理 Excel?解決工廠訂單管理挑戰的實際案例【Python 處理 Excel #29】